Type Predicates
type Predicatesも推論される
code:ts
// const isNumber: (x: unknown) => x is number
const isNumber = (x: unknown) => typeof x === 'number';
// const isNonNullish: <T>(x: T) => x is NonNullable<T>
const isNonNullish = <T,>(x: T) => x != null;
推論される条件
その関数の返り値の型を明示的に指定していない
関数内のreturnは1つである
その関数は引数の上書きをしない
その関数は、引数の絞り込みに関連したbooleanを返している
↑この条件だと、もうほぼx is Tと書く機会はなくなりそうだなmrsekut.icon isを使って自作TypeGuradなるものを作る
返り値の型はbooleanを定義する
isは実装によらず、その型になるので注意
例
code:ts
export const notEmpty = <Value>(
value: Value | null | undefined,
): value is Value => value != null;
安全に